/*
 * mc_debug.h
 *
 *  Created on: Dec 5, 2024
 *      Author: Vinson
 */

#ifndef INC_MC_DEBUG_H_
#define INC_MC_DEBUG_H_


// 定义打印等级
#define DEBUG_LEVEL_ERROR 0
#define DEBUG_LEVEL_INFO 1
#define DEBUG_LEVEL_DEBUG 2

// 当前打印等级
#define CURRENT_DEBUG_LEVEL DEBUG_LEVEL_DEBUG

// 打印宏，根据等级控制输出
#define PRINTF_LEVEL(level, format, ...) \
    do { \
        if (level <= CURRENT_DEBUG_LEVEL) { \
            printf(format, ##__VA_ARGS__); \
        } \
    } while (0)
#define MC_INFO(format, ...)	PRINTF_LEVEL(DEBUG_LEVEL_INFO, format, ##__VA_ARGS__)
#define MC_DEBUG(format, ...)	PRINTF_LEVEL(DEBUG_LEVEL_DEBUG, format, ##__VA_ARGS__)
#define MC_ERROR(format, ...)	PRINTF_LEVEL(DEBUG_LEVEL_ERROR, format, ##__VA_ARGS__)

#define MC_DEBUG_VEL(cnt, format, ...) \
	    do { \
        if (cnt == PRINT_LOOP_NUMBER) { \
            MC_DEBUG(format, ##__VA_ARGS__); \
        } \
    } while (0)

#define PRINT_LOOP_NUMBER       1000
extern int print_cnt;
#endif /* INC_MC_DEBUG_H_ */
